package com.mpyy.service.sales;

import com.mpyy.pojo.*;

import java.util.List;

/**
 * @Description ProSalesServiceInter接口
 * @Author qzy
 * @Date 2022-03-07 8:19
 * @Version 1.0
 */
public interface ProSalesServiceInter {
    /**
     * 查询库存明细表，获取商品信息，填充到商品清单的tab栏
     * @param paging 分页对象
     * @return List<InventoryDesc> 库存明细对象集合
     */
    List<InventoryDesc> searchProBill(String inveDescDepot, Paging paging);

    /**
     * 查询库存明细表中的数据条数
     * @return int 返回数据总数
     */
    int searchProBillsCount();

    /**
     * 根据商品编号查询该商品批次信息
     * @param inventoryDesc 库存明细对象
     * @return List<InventoryDesc> 库存明细对象集合
     */
    List<InventoryDesc> searchProBatchNumInfo(InventoryDesc inventoryDesc);

    /**
     * 新增商品销售信息
     * @param saleOrder 销售订单对象
     * @param saleOrderDescs 销售订单明细对象
     * @return boolean 是否新增成功
     */
    boolean insertProSalesInfo(SaleOrder saleOrder, List<SaleOrderDesc> saleOrderDescs);

    /**
     * 查询客户信息
     * @return List<CustomerInfo> 客户对象集合
     */
    List<CustomerInfo> searchCustomerInfo();

    /**
     * 查询仓库信息
     * @return List<DepotInfo> 仓库对象集合
     */
    List<DepotInfo> searchDepotInfo();

    /**
     * 查询员工信息(经办人)
     * @return List<EmployeeInfo> 员工对象集合
     */
    List<EmployeeInfo> searchEmpInfo();

    /**
     * 查询客户类型信息(经办人)
     * @return List<CustomerType> 客户类型对象集合
     */
    List<CustomerType> searchCustomerTypeInfo();

    /**
     * 修改客户信息
     * @param customerInfo 客户信息对象
     * @return 影响行数
     */
    int updateAlertCustomerInfo(CustomerInfo customerInfo);

    /**
     * 新增客户信息
     * @param customerInfo 客户信息对象
     * @return 影响行数
     */
    int updateInsertCustomerInfo(CustomerInfo customerInfo);

    /**
     * 带条件查找商品清单信息
     * @param inventoryDesc 库存明细对象
     * @return 库存明细对象集合
     */
    List<InventoryDesc> searchProBillInfo(InventoryDesc inventoryDesc);

    /**
     * 根据商品进货日期查询最近进货的商品信息（近一个月内）
     * @param inventoryDesc 库存明细对象
     * @return List<InventoryDesc> 库存明细对象集合
     */
    List<InventoryDesc> searchRecentPurchaseInfo(InventoryDesc inventoryDesc);

    /**
     * 查询商品级别表所有数据
     * @return List<ProductType> 商品级别对象集合
     */
    List<ProductType> searchProductTypeInfo();

    /**
     * 查询商品列表的信息【所在仓库 | 商品类别编号（商品编号）】
     * @param proTypeId 商品级别编号
     * @return 库存明细对象集合
     */
    List<InventoryDesc> searchProListTree(String proTypeId);

    /**
     * 查询商品销售历史信息
     * @param saleOrderDesc 商品明细对象
     * @return List<SaleOrderDesc> 销售订单明细对象集合
     */
    List<SaleOrderDesc> searchProSaleHisInfo(SaleOrderDesc saleOrderDesc);

    /**
     * 查询销售订单明细、销售退货明细、商品信息（商品报表信息）
     * @param saleOrderDesc 销售订单明细
     * @return 销售订单明细
     */
    List<SaleOrderDesc> searchProSaleReport(SaleOrderDesc saleOrderDesc);

    /**
     * 新增客户类型
     * @param customerType 客户类型对象
     * @return int 影响行数
     */
    int updateInsertCustomerType(CustomerType customerType);
}
